﻿Imports System.Data.SqlClient

Public Class UsuarioDAO

    Public Function insertar(ByVal omen As Usuario) As Usuario
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "INSERT INTO USUARIO (idUsuario, clave, correo, telefono, direccion, fecha_instalacion, nombre, apellido, estado, tipo_user, localidad, provincia) VALUES (@VALOR1, @VALOR2, @VALOR3, @VALOR4, @VALOR5, @VALOR6, @VALOR7, @VALOR8, @VALOR9, @VALOR10, @VALOR11, @VALOR12)"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", omen.idUsuario)
            cmd.Parameters.AddWithValue("@VALOR2", omen.clave)
            cmd.Parameters.AddWithValue("@VALOR3", omen.correo)
            cmd.Parameters.AddWithValue("@VALOR4", omen.telefono)
            cmd.Parameters.AddWithValue("@VALOR5", omen.direccion)
            cmd.Parameters.AddWithValue("@VALOR6", omen.fecha_instalacion)
            cmd.Parameters.AddWithValue("@VALOR7", omen.nombre)
            cmd.Parameters.AddWithValue("@VALOR8", omen.apellido)
            cmd.Parameters.AddWithValue("@VALOR9", omen.estado)
            cmd.Parameters.AddWithValue("@VALOR10", omen.tipo_user)
            cmd.Parameters.AddWithValue("@VALOR11", omen.localidad)
            cmd.Parameters.AddWithValue("@VALOR12", omen.provincia)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("CategoriaDAO: No insertó")
            End If

            sql = "SELECT @@IDENTITY"
            cmd = New SqlCommand(sql, cn)
            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            dr.Close()
            cn.Close()



        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return omen

    End Function

    Public Function listar() As Collection
        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT idUsuario, clave, correo, telefono, direccion, fecha_instalacion, nombre, apellido, estado, tipo_user, localidad, provincia FROM USUARIO"
            Dim cmd As New SqlCommand(sql, cn)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            While dr.Read
                Dim omen As New Usuario

                omen.idUsuario = dr(0).ToString
                omen.clave = dr(1).ToString
                omen.correo = dr(2).ToString
                omen.telefono = dr(3).ToString
                omen.direccion = dr(4).ToString
                omen.fecha_instalacion = dr(5).ToString
                omen.nombre = dr(6).ToString
                omen.apellido = dr(7).ToString
                omen.estado = dr(8).ToString
                omen.tipo_user = dr(9).ToString
                omen.localidad = dr(10).ToString
                omen.provincia = dr(11).ToString
             


                lista.Add(omen)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function

    Public Function buscarPorNombre(ByVal nombre As String, ByVal apellido As String, ByVal tipo_user As String) As Collection
        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT idUsuario, clave, correo, telefono, direccion, fecha_instalacion, nombre, apellido, estado, tipo_user, localidad, provincia  FROM USUARIO WHERE UPPER(NOMBRE) LIKE @VALOR1 AND UPPER(APELLIDO) LIKE @VALOR2 AND UPPER(TIPO_USER) LIKE @VALOR3"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", "%" + nombre.ToUpper + "%")
            cmd.Parameters.AddWithValue("@VALOR2", "%" + apellido.ToUpper + "%")
            cmd.Parameters.AddWithValue("@VALOR3", "%" + tipo_user.ToUpper + "%")


            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            While dr.Read
                Dim omen As New Usuario
                omen.idusuario = dr(0).ToString
                omen.clave = dr(1).ToString
                omen.correo = dr(2).ToString
                omen.telefono = dr(3).ToString
                omen.direccion = dr(4).ToString
                omen.fecha_instalacion = dr(5).ToString
                omen.nombre = dr(6).ToString
                omen.apellido = dr(7).ToString
                omen.estado = dr(8).ToString
                omen.tipo_user = dr(9).ToString
                omen.localidad = dr(10).ToString
                omen.provincia = dr(11).ToString



                lista.Add(omen)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function

    Public Sub actualizar(ByVal omen As Usuario)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "UPDATE USUARIO SET idUsuario=@VALOR1, clave=@VALOR2, correo=@VALOR3, telefono=@VALOR4, direccion=@VALOR5, fecha_instalacion=@VALOR6, nombre=@VALOR7, apellido=@VALOR8, estado=@VALOR9, tipo_user=@VALOR10, localidad=@VALOR11, provincia=@VALOR12 WHERE idUsuario=@VALOR1"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", omen.idusuario)
            cmd.Parameters.AddWithValue("@VALOR2", omen.clave)
            cmd.Parameters.AddWithValue("@VALOR3", omen.correo)
            cmd.Parameters.AddWithValue("@VALOR4", omen.telefono)
            cmd.Parameters.AddWithValue("@VALOR5", omen.direccion)
            cmd.Parameters.AddWithValue("@VALOR6", omen.fecha_instalacion)
            cmd.Parameters.AddWithValue("@VALOR7", omen.nombre)
            cmd.Parameters.AddWithValue("@VALOR8", omen.apellido)
            cmd.Parameters.AddWithValue("@VALOR9", omen.estado)
            cmd.Parameters.AddWithValue("@VALOR10", omen.tipo_user)
            cmd.Parameters.AddWithValue("@VALOR11", omen.localidad)
            cmd.Parameters.AddWithValue("@VALOR12", omen.provincia)


            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("CategoriaDAO: No actualizó")
            End If

            cn.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
            Throw New DAOExcepcion(ex.ToString)
        End Try
    End Sub

    Public Function Login(ByVal idUsuario As String, ByVal clave As String) As Usuario


        Dim omen As New Usuario

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT idUsuario, clave FROM USUARIO WHERE idUsuario = @VALOR1 AND clave = @VALOR2"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", idUsuario.ToUpper)
            cmd.Parameters.AddWithValue("@VALOR2", clave.ToUpper)


            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()


            If dr.Read Then

                omen.idusuario = dr(0).ToString
                omen.clave = dr(1).ToString


            Else
                Throw New DAOExcepcion("Usuario / clave incorrectos")

            End If


            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return omen

    End Function




End Class

